在人类医学领域,医生运用传统的“望闻问切”诊断方法,结合现代仪器的精确检测,对患者的病情进行准确判断。
同理,在汽车领域,为快速而准确地识别车辆或特定控制器的故障及其原因,进而为维修工作提供坚实的数据支持,车载诊断系统的概念应运而生。
汽车诊断作为汽车整体状况把控的重要事项,其实质是对汽车进行故障检测与定位的一系列操作过程,它对于稳固汽车的安全系数、保障汽车各项性能的正常发挥,有着非常重要的意义。
随着科技水平不断的进步,汽车诊断的方式也发生了翻天覆地的变化。起初,汽车故障主要仰仗人工检测行为,依靠检测者过往经验所形成的判断力来甄别汽车问题所在。可随着时间的推移与科技的进步,当下的汽车故障诊断已演变成为一个自动化、数字化的工具。而汽车诊断协议则是诊断工具与车辆之间的通信协议。目前,市场上常见的两种汽车诊断协议是OBD(On-Board Diagnostics)和UDS(Unified diagnostic services)。
OBD和UDS是两种常见的诊断协议,它们在目标和应用领域上存在一些区别。
其中OBD协议主要是针对排放问题而对传统燃油车制定的诊断协议,电动汽车无需满足,它主要是通过读取车辆的故障码来判断燃油车排放是否符合法规标准,用于汽车排放系统相关的ECU上。
UDS协议则更加全面和灵活,在各个ECU上是一种通用型的协议。它与OBD最大的区别在于它是面向整车所有ECU的。但就UDS而言,它只是一个应用层协议(ISO 14229-1),其实现无需关注应用层以下的实现。因此,它可以基于CAN总线、Lin总线或者Ethernet总线等不同的物理传输方式实现与ECU硬件的通信。此外,UDS提供的是一个诊断服务的基本框架,定义了一系列的诊断服务和通用化的诊断流程,主机厂和零部件供应商可以根据实际情况选择实现其中的一部分或是自定义出一些私有化的诊断服务来,所以基于UDS的诊断又称为增强型诊断。
在UDS协议中,服务标识用于标识要执行的服务。每个服务都有一个唯一的服务标识(即SID),在诊断会话中通过服务标识来区分要执行响应哪种服务请求。UDS中定义了26种服务,并将这些服务划分为6大类:诊断和通信管理类、数据传输类、存储数据传输类、输入输出控制类、例程功能类、上传下载类。
spr=1,抑制正响应,即ECU不给出正响应
spr=0,需要ECU给出正响应,如果某个服务没有sub-function,即没有第二个字节,那默认是要发正响应的
诊断工具向车辆发送服务请求后,如果服务执行成功,则返回的响应消息称为正响应,反之返回的响应消息称为负响应。
正响应报文首字节会回复【SID + 0x40】。在这里举个简单的例子,当诊断仪请求的服务ID为0x10时,若是正响应,则目标ECU会返回0x50;若请求的是0x22,则目标ECU会响应0x62。正响应的字节组成格式如下所图所示:
负响应消息由三部分组成:0x7F + SID + 负响应码(Negative Response Code ; NRC)。其中首字节0x7F是固定值,SID用于标识响应的服务,负响应码指示服务执行失败的原因。负响应报文的字节组成格式如下所示:
这里以诊断会话0x10服务为例,具体负响应流程如下图所示:
在UDS协议栈中,负响应码用于指示服务执行失败的原因。NRC用一个字节表示,每个取值都对应一种不同类型的错误类型。
车载诊断技术是现代汽车维护和管理的关键工具,其核心在于通过标准化的诊断协议来实现对车辆系统的有效监测和故障诊断。本章详细介绍了常见的诊断协议,如OBD和UDS,以及这些协议中的专业术语,如服务标识(Service ID)、诊断请求和响应等。这些内容为深入理解和学习诊断服务及故障码提供了坚实的基础。